
template 
	< typename T
	, template<typename ELEM, typename ALLOC=std::allocator<ELEM> > class Container>
std::ostream& operator << (ostream& out, const Container<T>& in)
{
	typename Container<T>::const_iterator it; 
	typename Container<T>::const_iterator end(in.end());
	
	for (it = in.begin(); it != end ; it++)
		std::cout << (*it) << endl ;
		
	return out;
}


template 
	< typename F
	  , typename S
	  , template <class Key, class T, class Compare = std::less<Key>,
	  			  class Allocator = std::allocator<std::pair<const Key, T> > > class map >

ostream& operator << (ostream& out, const map<F, S> & in)
{
	typename map<F, S>::const_iterator it; 
	
	for (it = in.begin(); it != in.end() ; it++)
		cout << (*it).first <<  "=>" << (*it).second << endl ;
		
	return out;
}


template <class F, class S, template <class T1, class T2> class pair >

ostream& operator << (ostream& out, pair<F, S> in)
{
	cout << "( Net: " << in.first << ", " << "Direction: " << in.second << " )" << endl ;
	return out ;
}



